// +----------------------------------------------------------------------
// | Api接口文案
// +----------------------------------------------------------------------
import { request } from "@/common/request";
import config from "@/common/config";
import store from "@/store/index";

const API_UPLUAD = "/kingon-file/oss/endpoint/put-file?code=minio";
/**
 * 通用文件上传
 * @param {*} file
 * @param {*} uploadTaskCallback  上传进度监听回调
 * @param {*} fileIndex  当前上传的文件下标（可选）
 * @returns
 */
export function uploadFile(file, uploadTaskCallback, fileIndex = 0, fileType = "image") {
  return new Promise((resolve, reject) => {
    /* config 为默认全局配置*/
    const baseURL = config.baseUrl || "";
    const prefix = config.prefix || "";
    // console.log("baseURL:", baseURL, prefix);
    let finalUrl = baseURL;
    // #ifdef H5
    // 如果是h5开发环境，则使用代理
    finalUrl = baseURL + prefix;
    // 注意 ： 此处需要兼顾h5开发环境下，需要代理的接口，以及生产环境直接访问的接口
    if (import.meta.env.DEV) {
      finalUrl = prefix;
    }
    // #endif
    // #ifndef H5
    // 如果是非h5开发环境，则直接使用baseURL (prefix 只用于前端代理，实际后端请求不需要，所以此处不使用,如果需要请加上前缀)
    finalUrl = baseURL + prefix;
    // #endif
    const uploadTask = uni.uploadFile({
      url: finalUrl + API_UPLUAD,
      filePath: file.url,
      name: "file",
      fileType: fileType,
      // #ifdef H5 || APP-PLUS
      files: [
        {
          name: "file",
          uri: file.url,
        },
      ],
      // #endif

      // #ifdef MP-WEIXIN
      name: "file",
      filePath: file.url,
      fileType: fileType,
      // #endif
      header: {
        Authorization: "Basic c2FiZXI6c2FiZXJfc2VjcmV0",
        "Kingon-Auth": "bearer " + store.getters.token,
        "Tenant-Id": config.getTenantId(),
      },
      success: (uploadRes) => {
        // console.log(uploadRes)
        if (uploadRes.statusCode == 200) {
          let successData = JSON.parse(uploadRes.data);
          if (successData.code == 200) {
            file.progress = 100;
            file.url = successData.data.link;
            file.name = successData.data.name;
            file.result = "ok";
            resolve(file);
          } else if (successData.code == 401) {
            uni.showToast({
              title: "登录状态已过期",
              icon: "none",
            });
            uni.hideLoading();
            reject("登录状态已过期");
          } else {
            uni.showToast({
              title: "上传失败，请点击图片重试",
              icon: "none",
            });
            uni.hideLoading();
            reject("上传失败，请点击图片重试");
          }
        } else {
          uni.showToast({
            title: "上传错误",
            icon: "none",
          });
          uni.hideLoading();
          reject("上传错误");
        }
      },
      fail: (e) => {
        console.error("e", e);
        uni.showToast({
          title: "上传失败，请点击图片重试",
          icon: "none",
        });
        uni.hideLoading();
        reject("上传失败");
      },
    });

    // 上传进度监听回调
    uploadTask.onProgressUpdate((res) => {
      if (uploadTaskCallback) {
        uploadTaskCallback(res, uploadTask, fileIndex);
      }
    });
  });
}

/**
 * 系统模块 > 租户管理 >列表
 */
export function getTenantList() {
  return request({
    url: `/auth/tenant/list`,
    method: "get",
  });
}

/*
 *
 * 系统模块 > 租户管理 > 详情
 */
export function getTenantDetail(data) {
  return request({
    url: `/kingon-system/tenant/detail`,
    method: "get",
    data,
  });
}

/**
 * 更新账号个推的cid标识
 */
export function getCid(data) {
  return request({
    url: `/kingon-system/updateUserCid`,
    method: "get",
    data,
  });
}

/**
 * 上传身份证获取信息
 */
export function getIdCardMsg(data) {
  return request({
    url: `/kingon-system/otherSdk/ocr/getIdCardMsg`,
    method: "post",
    data,
  });
}

/**
 * agedpeople-system > app轮播图管理 > 分页
 */
export function getbannerList(data) {
  return request({
    url: `/kingon-system/kingon-com/banner/list`,
    method: "get",
    data,
  });
}

/**
 * ？-system > app轮播图管理 > 详情
 */
export function getbanner(data) {
  return request({
    url: `/kingon-system/kingon-com/banner/detail`,
    method: "get",
    data,
  });
}

/**
 * 数据字典
 */
export function getDictDataList(type) {
  return request({
    url: `/kingon-system/dict/data/type/${type}`,
    method: "get",
    data,
  });
}

/**
 * 地区/下拉选择
 */
export function getRegionSelect(data) {
  return request({
    url: `/kingon-system/region/select`,
    method: "get",
    data,
  });
}

/**
 * agedpeople-system > sys-user-controller > 找回密码
 */
export function postUserTakePassword(data) {
  return request({
    url: `/kingon-system/takePassword`,
    method: "post",
    data,
  });
}

/**
 * 通知公告
 */
export function noticelist(data) {
  return request({
    url: `/kingon-mechanism/kingon/notice/appList`,
    method: "get",
    data,
  });
}
/**
 * 通知公告详情
 */
export function noticedetail(data) {
  return request({
    url: `/kingon-mechanism/kingon/notice/detail`,
    method: "get",
    data,
  });
}

/**
 *   校验控制器  校验密码是否符合配置规则
 */
export function postCheckPwd(data) {
  return request({
    url: `/kingon-system/check/checkPwd`,
    method: "post",
    data,
  });
}

/**
 *   注销账号
 */
export function unAccount(data) {
  return request({
    url: `/kingon-system/unAccount`,
    method: "get",
    data,
  });
}

/**
 *   获取微信openid
 */
export function getWxOpenidByCode(data) {
  return request({
    url: `/kingon-pay/userPay/getWxOpenidByCode`,
    method: "get",
    data,
  });
}

/**
 * 获取支付配置
 */
export function getPayMode(data) {
  return request({
    url: `/kingon-pay/userPay/getPayMode`,
    method: "get",
    data,
  });
}

/**
 *  系统模块 三方sdk调用 地图逆地理编码
 */
export function getReverseGeocoding(data) {
  return request({
    url: `/kingon-system/otherSdk/map/reverseGeocoding`,
    method: "get",
    data,
  });
}

/**
 *  获取微信公众号跳转连接
 */
export function getWECHAT_GZH(data) {
  return request({
    url: `/kingon-auth/oauth/render/wechat_gzh`,
    method: "get",
    data,
    header: { noVerify: true },
  });
}

/**
 *  更新用户信息微信公众号openid信息
 */
export function setBindOauthIdByUser(openid) {
  return request({
    url: `kingon-system/bindOauthIdByUser?uuid=${openid}&source=wechat_gzh`,
    method: "get",
    data,
    header: { noVerify: true },
  });
}
/** 获取当前部门和所有上级部门 */
export function getParentDept() {
  return request({
    url: `/kingon-system/dept/parentDept`,
    method: "get",
    data,
  });
}

/** 演示平台手机校验 */
export function sendValidate(phone) {
  return request({
    url: `/kingon-push/sms/endpoint/send-validate?phone=${phone}`,
    method: "post",
    data,
  });
}

/**
 * 系统模块 参数管理
 */
export function getParamList(data) {
  return request({
    url: `/kingon-system/param/list`,
    method: "get",
    data,
  });
}

/**
 *  获取会话state
 */
export function getWechatXcx(data) {
  return request({
    url: `/kingon-auth/oauth/render/wechat_xcx`,
    method: "get",
    data,
    header: { noVerify: true },
  });
}

/**
 * 区域选择
 */
export function regionSelect(data) {
  return request({
    url: `/kingon-system/region/select`,
    method: "get",
    data,
  });
}

/**
 * 部门(机构)详情
 */
export function deptDetail(data) {
  return request({
    url: `/kingon-system/dept/detail`,
    method: "get",
    data,
  });
}

/**
 * 通知公告
 * @param {*} data
 * @returns
 */
export function noticeList(data) {
  return request({
    url: `/kingon-mechanism/kingon/notice/list`,
    method: "get",
    data,
  });
}

export function postAppSendSms(data) {
  return request({
    url: `/kingon-push/sms/appSendSms`,
    method: "post",
    data,
  });
}
